package main

import "fmt"

// 函数功能：求和
// 函数getSum 参数为空
func getSum() func(int) int {
	var sum int = 0
	return func(i int) int {
		sum = sum + i
		return sum
	}
}

//闭包：返回的匿名函数+匿名函数以外的变量num
//匿名函数中引用的变量sum会一直保存在内存中，可以一直使用
//闭包对内存消耗大，不要滥用

func main() {
	f := getSum()
	fmt.Println(f(1)) //1
	fmt.Println(f(2)) //3
	fmt.Println(f(3)) //6

	fmt.Println("----------")
	fmt.Println(getSum01(1)) //1
	fmt.Println(getSum01(2)) //2
	fmt.Println(getSum01(3)) //3
}

func getSum01(num int) int {
	var sum int = 0
	sum = sum + num
	return sum
}
